package com.common.library.util;

import org.json.JSONObject;
/**
 * <p>JSON帮助类</p>
 * @author chengfu.bao
 */
public class JsonHelper {
	
	/**
	 * 简单编码
	 * @param json 待编码的json字符串(即原文)
	 * @return 编码后的json字符串(即密文)
	 */
	public static String simpleEncode(JSONObject json){
		return simpleEncode(json.toString());
	}
	/**
	 * 简单编码
	 * @param encodeStr 待编码的字符串(即原文)
	 * @return 编码后的字符串(即密文)
	 */
	public static String simpleEncode(String encodeStr){
		return simpleEncode("0", 0, encodeStr);
	}
	/**
	 * 简单编码
	 * @param prefix 前缀
	 * @param randomStringLength 随机字符串长度
	 * @param json 待编码的json字符串(即原文)
	 * @return 编码后的json字符串(即密文)
	 */
	public static String simpleEncode(String prefix, int randomStringLength, JSONObject json){
		return simpleEncode(prefix, randomStringLength, json.toString());
	}
	/**
	 * 简单编码
	 * @param prefix 前缀
	 * @param randomStringLength 随机字符串长度
	 * @param json 待编码的字符串(即原文)
	 * @return 编码后的字符串(即密文)
	 */
	public static String simpleEncode(String prefix, int randomStringLength, String encodeStr){
		String result = null;
		if (Helper.isNotEmpty(encodeStr)){
			result = String.format(
					"%s%s%s"
					, prefix
					, (randomStringLength > 0) ? Helper.createRandomString(randomStringLength) : ""
					, EncryptHelper.encodeByBase64(encodeStr)
					);
		}
		return result;
	}
	/**
	 * 简单解码
	 * @param decodeStr 待解码的字符串(即密文)
	 * @return 解码后字符串(即原文)
	 */
	public static String simpleDecode(String decodeStr){
		return simpleDecode("0", 3, decodeStr);
	}
	/**
	 * 简单解码
	 * @param jsonStr 待解码的json字符串(即密文)
	 * @return json
	 */
	public static JSONObject simpleJsonDecode(String decodeStr){
		return simpleJsonDecode("0", 3, decodeStr);
	}
	/**
	 * 简单解码
	 * @param prefix 前缀
	 * @param randomStringLength 随机字符串长度
	 * @param decodeStr 待解码的字符串(即密文)
	 * @return 解码后字符串(即原文)
	 */
	public static String simpleDecode(String prefix, int randomStringLength, String decodeStr){
		String result = null;
		if (Helper.isNotEmpty(decodeStr) && randomStringLength >= 0 && decodeStr.length() > randomStringLength){
			if (Helper.isNotEmpty(prefix)){
				if (decodeStr.startsWith(prefix)){
					result = EncryptHelper.decodeToStringByBase64(
							decodeStr.substring(prefix.length() + randomStringLength));
				}
			}else{
				result = EncryptHelper.decodeToStringByBase64(
						decodeStr.substring(randomStringLength));
			}
		}
		return result;
	}
	/**
	 * 简单解码
	 * @param prefix 前缀
	 * @param randomStringLength 随机字符串长度
	 * @param jsonStr 待解码的json字符串(即密文)
	 * @return json(即原文)
	 */
	public static JSONObject simpleJsonDecode(String prefix, int randomStringLength, String jsonStr){
		JSONObject result = null;
		String decodeStr = simpleDecode(prefix, randomStringLength, jsonStr);
		if (Helper.isNotEmpty(decodeStr)){
			try{
				result = new JSONObject(decodeStr);
			}catch (Exception e) {
				e.printStackTrace();
			}
		}
		return result;
	}
}
